home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
t_os
/
wstype
/
source
/
srom.s
< prev
next >
Wrap
Text File
|
1991-10-18
|
1KB
|
101 lines
/*** [srom.s]
*
* システムロム 関連 (C)ささがわ
*
* For GNU Assembler (GAS)
*
***/
.text
/* int SROM_mos(int no, int x, int y, int color) */
.align 2
_SROM_mos:
.globl _SROM_mos
enter $0, $0
pushl %esi
pushl %edi
cld
movb $4, buf
movb $32, buf + 1
pushl %ds
popl %es
movl $buf + 2, %edi
movl $128, %ecx
movl $0, %eax
rep
stosl
pushl %ds
movl $buf + 2, %edi
movl 8(%ebp), %esi
decl %esi
shll $8, %esi
addl $0x28000, %esi
pushl %ds
popl %es
pushl $0x0108
popl %ds
movl $128, %ecx
_SROM_icn_la:
pushl %ecx
movb (%esi), %al
movb 128(%esi), %ah
movl $8, %ecx
_SROM_icn_lb:
pushw %cx
movb %ah, %dl
decb %cl
shrb %cl, %dl
testb $1, %dl
jz _SROM_icn_ga
movb $0, %dl
jmp _SROM_icn_gb
_SROM_icn_ga:
movb %al, %dl
shrb %cl, %dl
testb $1, %dl
jz _SROM_icn_gc
movb %es:_PAL_Black, %dl
jmp _SROM_icn_gb
_SROM_icn_gc:
movb %es:20(%ebp), %dl
_SROM_icn_gb:
popw %cx
testb $1, %cl
jz _SROM_icn_gd
shlb $4, %dl
addb %dl, %es:(%edi)
incl %edi
jmp _SROM_icn_ge
_SROM_icn_gd:
addb %dl, %es:(%edi)
_SROM_icn_ge:
loop _SROM_icn_lb
incl %esi
popl %ecx
loop _SROM_icn_la
movl $32, %ecx
rep
movsl
popl %ds
pushl $buf
pushl 16(%ebp)
pushl 12(%ebp)
pushl $2
call _MOS_type
addl $16, %esp
popl %edi
popl %esi
leave
ret
.lcomm buf, 642